<?php

    Class UsuariosDAO
    {

        private static function getInstance($rs)
        {
            $usuario = new Usuario();

            $usuario->idUsuario   = $rs->fields["idusuario"];
            $usuario->username    = $rs->fields["username"];
            $usuario->activo      = $rs->fields["activo"];
            $usuario->password    = $rs->fields["password"];
            $usuario->nombre      = $rs->fields["nombre"];
            $usuario->tipoUsuario = $rs->fields["tipousuario"];
            $usuario->saldo       = $rs->fields["saldo"];

            return $usuario;
        }

        static function add(&$usuario)
        {
            $db = MyConnection::$db;

            $query = $db->Prepare("INSERT INTO usuarios (username, activo, password, nombre, tipousuario, saldo) VALUES (?,?,?,?,?,?)");
            return $db->Execute($query, array($usuario->username, $usuario->activo, $usuario->password, $usuario->nombre, $usuario->tipoUsuario, $usuario->saldo));
        }

        static function update(&$usuario)
        {
            $db = MyConnection::$db;

            $query = $db->Prepare("UPDATE usuarios SET username=?, activo=?, password=?, nombre=?, tipousuario=?, saldo=? WHERE idUsuario = ?");
            return $db->Execute($query, array($usuario->username, $usuario->activo, $usuario->password, $usuario->nombre, $usuario->tipoUsuario, $usuario->saldo, $usuario->idUsuario));
        }

        static function getById($id)
        {
            $db = MyConnection::$db;
            $rs = $db->Execute("SELECT * FROM usuarios WHERE idusuario = $id");

            if (!$rs->EOF)
            {
                return self::getInstance($rs);
            }
        }

        static function getAll()
        {
            $db = MyConnection::$db;

            $rs = $db->Execute("SELECT * FROM usuarios");

            $all = array();
            while (!$rs->EOF)
            {
                $all[] = self::getInstance($rs);
                $rs->MoveNext();
            }

            return $all;
        }

        static function getAllByApuestasAcertadas() // TO-DO!
        {
            $db = MyConnection::$db;

            $rs = $db->Execute("SELECT * FROM usuarios");

            $all = array();
            while (!$rs->EOF)
            {
                $all[] = self::getInstance($rs);
                $rs->MoveNext();
            }

            return $all;
        }

        static function getByUsername($username)
        {
            $db = MyConnection::$db;

            $rs = $db->Execute("SELECT * FROM usuarios WHERE username = '$username'");

            if (!$rs->EOF)
            {
                return self::getInstance($rs);
            }
            else
            {
                return null;    
            }

        }

    }

?>